Эти макросы созданы для удобной конвертации BSTR - ANSI и ANSI - BSTR. Мы уже рассматривали механизмы подобной конвертации в шаге "Шаг 57 - OLECHAR в CHAR и обратно". Но использование этих макросов довольно удобно и намного проще. Смотрим пример:
#include "stdafx.h"
#include "atlbase.h"
#include "iostream.h"
void main()
{
CComBSTR bstrTemp;
char buffer[5];
strcpy(buffer,"Hello");
USES_CONVERSION;
bstrTemp=A2W(buffer);
strcpy(W2A(bstrTemp),buffer);
cout << buffer << endl;
}
В основе этих макросов две функции API:
MultiByteToWideChar() WideCharToMultiByte()
Эти две функции имеют просто огромное количество параметров, а данный макрос скрывает эти параметры от нас, вот и вся идея. Ну, например, первый параметр - это тип кодировки, нам бы пришлось ставить параметр, что это ANSI, а не MAC (Макинтош). Вообще пользуйтесь и не забывайте USES_CONVERSION, который тоже макрос и определяет ряд параметров для корректного преобразования, используемые потом в указанных макросах.